package com.briup.cms.web.controller;

import com.briup.cms.bean.Group;
import com.briup.cms.log.LoggingAccess;
import com.briup.cms.service.IGroupService;
import com.briup.cms.utils.Message;
import com.briup.cms.utils.MessageUtil;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 14433
 */
@Api(tags="用户组相关接口")
@RestController
@RequestMapping("/auth")
public class GroupController {
    @Autowired
    private IGroupService groupService;

    @ApiOperation(value="查询所有的用户组信息")
    //如果要查询，则使用@GetMapping来映射路径
    @GetMapping("/groups")
    @LoggingAccess
    public Message findGroups(){
        //在Controller接口中，要完成功能，需要调用service层的代码
        List<Group> list=groupService.findAllGroups();
        //把service层的实行结果返回给前端
        return MessageUtil.success(list);
    }

    @ApiOperation("通过id查询用户组信息")
    @GetMapping("/group")
    public Message findGroupById(Integer id){
        //调用service层代码，完成功能
        Group group=groupService.findGroupById(id);
        return MessageUtil.success(group);
    }

    //插入小组信息
    //新增操作，使用@PostMapping来映射路径
    @ApiOperation("新增组信息")
    @PostMapping("/group")
    public Message insertGroup(Group group){
        //调用service层代码，完成功能
        groupService.insertGroup(group);
        return MessageUtil.success();
    }

    //更新操作，使用@PutMapping映射路径
    @ApiOperation("更新用户组信息")
    @PutMapping("/group")
    public Message updateGroup(Group group){
        //调用service层代码，完成功能
        groupService.updateGroup(group);
        return MessageUtil.success();
    }

    //删除操作，使用@DeleteMapping映射路径
    @ApiOperation("通过id删除用户组信息")
    @DeleteMapping("/group")
    public Message deleteGroup(Integer id){
        //调用service层代码，完成功能
        groupService.deleteById(id);
        return MessageUtil.success();
    }

    @ApiOperation("分页查询所有的用户组信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name="pageNum",value="第几页",required=true,defaultValue="1"),
            @ApiImplicitParam(name="pageSize",value="每页几条",required=true,defaultValue="5"),
    })
    @GetMapping("/groups/page")
    public Message findGroupsByPage(int pageNum,int pageSize){
        //在Controller接口中，要完成功能，需要调用service层的代码
        PageInfo<Group> pageInfo=groupService.findGroupByPage(pageNum,pageSize);
        //把分页结果返回给前端
        return MessageUtil.success(pageInfo);
    }

}
